package com.jsg.sl651.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 通信模式<br />
 * M1报文类型：<br />
 * 定义：发送/无回答自报式报文，用于遥测站主动发送数据，中心站不响应。<br />
 * 特征：单向通信，适用发送单帧自报报文，上行帧结束符为ETX。<br />
 * M2报文类型：<br />
 * 定义：发送/确认自报式报文，遥测站发送数据后，中心站需确认。<br />
 * 特征：双向通信，超时重发机制，上行帧结束符为ETB/ETX，下行帧结束符为EOT/ESC。<br />
 * M3报文类型：<br />
 * 定义：多包发送/确认自报式报文，适用于连续多包数据发送，中心站一次性确认。<br />
 * 特征：多包发送，错误重发机制，上行帧结束符为ETB/ETX（重发包用ETX），下行帧结束符为EOT/NAK/ESC。<br />
 * M4报文类型：<br />
 * 定义：查询/响应报文，中心站发起查询，遥测站响应。<br />
 * 特征：中心站查询发起，适用数据查询和设置，下行帧结束符为ENQ/ACK/EOT，上行帧结束符为ETB/ETX。<br />
 */
@AllArgsConstructor
@Getter
public enum LinkTransmissionMode {
    M1_M2_M4("不分包模式","自报式",CommunicationDirection.BOTH_AWAY),
    M3("多包发送/确认","自报式",CommunicationDirection.TWO_AWAY),
    ;

    private final String type;
    private final String workType;
    private final CommunicationDirection direction;
}
